home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_03 / grant / chrom.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-31  |  1.3 KB  |  56 lines

  1. #include "random.h"
  2.  
  3. #ifndef _INC_CHROM_
  4. #define _INC_CHROM_
  5.  
  6. class CGAChromosome
  7. {
  8. public:
  9.    static void    InitializeChromosomeClass(
  10.                      size_t Length);
  11.   ~CGAChromosome();
  12.    CGAChromosome(float Prob = 0.0);
  13.  
  14.    CGAChromosome* Compliment() const;
  15.    void           Mutate(float Prob);
  16.    inline size_t  GetLength() const;
  17.    inline float   GetFitness() const;
  18.    friend void    Crossover(CGAChromosome*  Parent1,
  19.                      CGAChromosome*  Parent2,
  20.                      CGAChromosome*& Child1,
  21.                      CGAChromosome*& Child2,
  22.                      float Prob);
  23.    friend float   CalcSimilarityRatio(
  24.                      CGAChromosome* Chrom1,
  25.                      CGAChromosome* Chrom2);
  26.    inline GABool& operator[](size_t Idx);
  27.  
  28. private:
  29.    static void InitializeCrossoverMask(float Prob);
  30.  
  31.    static GABool*   m_CrossoverMask;
  32.    static size_t    m_Count;
  33.    static size_t    m_Length;
  34.    GABool*          m_Data;
  35.    float            m_Fitness;
  36. };
  37.  
  38. size_t CGAChromosome::GetLength() const
  39. {
  40.    return m_Length;
  41. }
  42.  
  43. float  CGAChromosome::GetFitness() const
  44. {
  45.    return m_Fitness;
  46. }
  47.  
  48. GABool& CGAChromosome::operator[](size_t Idx)
  49. {
  50.    return m_Data[Idx];
  51. }
  52.  
  53. float CalcFitness(CGAChromosome* Chromosome);
  54.  
  55. #endif
  56.